<?php
namespace Models;

require_once('UserType.php');

class UserArray
{
	private $_users = array();
	
	public function __construct(){}
	
	/**
	 * Lägger till en användare i användar-arrayen
	 */
	public function add(User $user)
	{
		$this->_users[] = $user; 
	}
	
	/**
	 * Hämtar array av användare
	 * @return Array (User)
	 */
	public function get()
	{
		return $this->_users;
	}
}

class User
{
	private $_userId; //Integer
	private $_userTypeId; //Integer
	private $_userName; //String
	private $_firstName; //String
	private $_lastName; //String
	
	public $isValid = true;
	
	/**
	 * Instansiera objekt
	 * @param $userId int
	 * @param $userTypeId int
	 * @param $userName string
	 * @param $firstName string
	 * @param $lastName string
	 */
	public function __construct($userId, $userTypeId, $userName, $firstName, $lastName)
	{
		$this->_userId = $userId;
		$this->_userTypeId = $userTypeId;
		$this->_userName = $userName;
		$this->_firstName = $firstName;
		$this->_lastName = $lastName;
		
		if(!is_numeric($userId) || !is_numeric($userTypeId))
			$this->isValid = false;
		
		if($userName = "" || $firstName == "" || $lastName = "")
			$this->isValid = false;
	}
	
	/**
	 * Hämtar användar-id
	 * @return int
	 */
	public function UserId()
	{
		return $this->_userId;
	}
	
	/**
	 * Hämtar användartyp-id
	 * @return int
	 */
	public function UserTypeId()
	{
		return $this->_userTypeId;
	}
	
	/**
	 * Hämtar användarnamn
	 * @return String Användarnamn
	 */
	public function UserName()
	{
		return $this->_userName;
	}
	
	/**
	 * Hämtar förnamn
	 * @return String
	 */
	public function FirstName()
	{
		return $this->_firstName;
	}
	
	/**
	 * Hämtar efternamn
	 * @return String
	 */
	public function LastName()
	{
		return $this->_lastName;
	}
	
	/**
	 * Kollar om användaren är administratör
	 * @return bool
	 */
	public function isAdmin()
	{
		if($this->UserTypeId() == \Models\UserType::ADMIN_USER)
			return true;
		
		return false;
	}
}

?>